diff options
| author | joonhoekim <26rote@gmail.com> | 2025-11-27 17:53:34 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-11-27 17:53:34 +0900 |
| commit | 5870b73785715d1585531e655c06d8c068eb64ac (patch) | |
| tree | 1d19e1482f5210cc56e778158b51e810f9717c46 /app/[lng] | |
| parent | 95984e67b8d57fbe1431fcfedf3bb682f28416b3 (diff) | |
(김준회) Revert "(대표님) EDP 작업사항"
태그 가져오기 실패 등 에러로 인한 Revert 처리
Diffstat (limited to 'app/[lng]')
4 files changed, 14 insertions, 231 deletions
diff --git a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx b/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx deleted file mode 100644 index 351fbca3..00000000 --- a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx +++ /dev/null @@ -1,95 +0,0 @@ -// app/[lng]/partners/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx -import DynamicTable from "@/components/form-data-plant/form-data-table"; -import { getFormData, getFormId,getProjectIdByCode } from "@/lib/forms-plant/services"; -import { useTranslation } from "@/i18n"; -import { Skeleton } from "@/components/ui/skeleton"; - -interface EngineeringFormPageProps { - params: { - lng: string; - projectCode: string; - packageCode: string; - formCode: string; - }; - searchParams?: { - mode?: string; - }; -} - -export default async function EngineeringFormPage({ - params, - searchParams, -}: EngineeringFormPageProps) { - // 1) 구조 분해 할당 - const resolvedParams = await params; - - // 2) searchParams도 await 필요 - const resolvedSearchParams = await searchParams; - - // 3) 구조 분해 할당 - const { lng, projectCode, packageCode, formCode } = resolvedParams; - - // i18n 설정 - const { t } = await useTranslation(lng, 'engineering'); - - // URL 쿼리 파라미터에서 mode 가져오기 (await 해서 사용) - const mode = "ENG"; // 기본값은 IM - - // 4) DB 조회 - projectCode와 packageCode를 전달 - const { columns, data, editableFieldsMap } = await getFormData( - formCode, - projectCode, - packageCode - ); - - // 5) formId 조회 - projectCode와 packageCode를 전달 - const { formId } = await getFormId(projectCode, packageCode, formCode, mode); - - const projectId = await getProjectIdByCode(projectCode) - - // 6) 예외 처리 - if (!columns) { - return ( - <p className="text-red-500"> - {t('errors.form_meta_not_found')} - </p> - ); - } - - // 7) 렌더링 - return ( - <div className="space-y-4"> - <div className="flex items-center justify-between"> - <div> - <h3 className="text-lg font-semibold">Engineering Form</h3> - <p className="text-sm text-muted-foreground"> - Project: {projectCode} / Package: {packageCode} / Form: {formCode} - </p> - </div> - </div> - - <div className="space-y-6"> - <DynamicTable - projectId={projectId} - projectCode={projectCode} - packageCode={packageCode} - formCode={formCode} - formId={formId} - columnsJSON={columns} - dataJSON={data} - editableFieldsMap={editableFieldsMap} - mode={"ENG"} - /> - </div> - </div> - ); -} - -function TableSkeleton() { - return ( - <div className="space-y-4"> - <Skeleton className="h-10 w-full" /> - <Skeleton className="h-[400px] w-full" /> - </div> - ); -}
\ No newline at end of file diff --git a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/im/[formCode]/page.tsx b/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/im/[formCode]/page.tsx deleted file mode 100644 index 29188061..00000000 --- a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/im/[formCode]/page.tsx +++ /dev/null @@ -1,95 +0,0 @@ -// app/[lng]/partners/vendor-data-plant/[projectCode]/[packageCode]/eng/[formCode]/page.tsx -import DynamicTable from "@/components/form-data-plant/form-data-table"; -import { getFormData, getFormId, getProjectIdByCode } from "@/lib/forms-plant/services"; -import { useTranslation } from "@/i18n"; -import { Skeleton } from "@/components/ui/skeleton"; - -interface EngineeringFormPageProps { - params: { - lng: string; - projectCode: string; - packageCode: string; - formCode: string; - }; - searchParams?: { - mode?: string; - }; -} - -export default async function IMFormPage({ - params, - searchParams, -}: EngineeringFormPageProps) { - // 1) 구조 분해 할당 - const resolvedParams = await params; - - // 2) searchParams도 await 필요 - const resolvedSearchParams = await searchParams; - - // 3) 구조 분해 할당 - const { lng, projectCode, packageCode, formCode } = resolvedParams; - - // i18n 설정 - const { t } = await useTranslation(lng, 'engineering'); - - // URL 쿼리 파라미터에서 mode 가져오기 (await 해서 사용) - const mode = "IM"; // 기본값은 IM - - // 4) DB 조회 - projectCode와 packageCode를 전달 - const { columns, data, editableFieldsMap } = await getFormData( - formCode, - projectCode, - packageCode - ); - - // 5) formId 조회 - projectCode와 packageCode를 전달 - const { formId } = await getFormId(projectCode, packageCode, formCode, mode); - - const projectId = await getProjectIdByCode(projectCode) - - // 6) 예외 처리 - if (!columns) { - return ( - <p className="text-red-500"> - {t('errors.form_meta_not_found')} - </p> - ); - } - - // 7) 렌더링 - return ( - <div className="space-y-4"> - <div className="flex items-center justify-between"> - <div> - <h3 className="text-lg font-semibold">Engineering Form</h3> - <p className="text-sm text-muted-foreground"> - Project: {projectCode} / Package: {packageCode} / Form: {formCode} - </p> - </div> - </div> - - <div className="space-y-6"> - <DynamicTable - projectId={projectId} - projectCode={projectCode} - packageCode={packageCode} - formCode={formCode} - formId={formId} - columnsJSON={columns} - dataJSON={data} - editableFieldsMap={editableFieldsMap} - mode={"IM"} - /> - </div> - </div> - ); -} - -function TableSkeleton() { - return ( - <div className="space-y-4"> - <Skeleton className="h-10 w-full" /> - <Skeleton className="h-[400px] w-full" /> - </div> - ); -}
\ No newline at end of file diff --git a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/page.tsx b/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/page.tsx deleted file mode 100644 index 4904a8ff..00000000 --- a/app/[lng]/partners/(partners)/vendor-data-plant/[projectCode]/[packageCode]/page.tsx +++ /dev/null @@ -1,37 +0,0 @@ -// app/[lng]/partners/vendor-data-plant/[projectCode]/[packageCode]/page.tsx - -import { TagsTable } from "@/lib/tags-plant/table/tag-table" - -interface MasterTagListPageProps { - params: Promise<{ - lng: string - projectCode: string - packageCode: string - }> -} - -export default async function MasterTagListPage({ - params, -}: MasterTagListPageProps) { - const { projectCode, packageCode } = await params - - return ( - <div className="space-y-4"> - <div className="flex items-center justify-between"> - <div> - <h3 className="text-lg font-semibold">Master Tag List</h3> - <p className="text-sm text-muted-foreground"> - Project: {projectCode} / Package: {packageCode} - </p> - </div> - </div> - - {/* 완전 클라이언트 컴포넌트 */} - <TagsTable - projectCode={projectCode} - packageCode={packageCode} - formCode="MASTER" - /> - </div> - ) -}
\ No newline at end of file diff --git a/app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx b/app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx index 792a3a6a..8a9c43e9 100644 --- a/app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx +++ b/app/[lng]/partners/(partners)/vendor-data-plant/layout.tsx @@ -2,35 +2,41 @@ import * as React from "react" import { cookies } from "next/headers" import { Shell } from "@/components/shell" +import { getVendorProjectsAndContracts } from "@/lib/vendor-data-plant/services" import { VendorDataContainer } from "@/components/vendor-data-plant/vendor-data-container" import { authOptions } from "@/app/api/auth/[...nextauth]/route" import { getServerSession } from "next-auth" import { InformationButton } from "@/components/information/information-button" import { useTranslation } from "@/i18n" -import { getVendorProjectsWithPackages } from "@/lib/vendor-data/services" interface VendorDataLayoutProps { children: React.ReactNode params: { lng?: string } } +// Layout 컴포넌트는 서버 컴포넌트입니다 export default async function VendorDataLayout({ children, params, }: VendorDataLayoutProps) { - const { lng } = await params + // 기본 언어는 'ko'로 설정, params.locale이 있으면 사용 + const { lng } = await params; const language = lng || 'en' const { t } = await useTranslation(language, 'engineering') const session = await getServerSession(authOptions) const vendorId = session?.user.companyId + // const vendorId = "17" const idAsNumber = Number(vendorId) - // 프로젝트 및 패키지 데이터 가져오기 - const projects = await getVendorProjectsWithPackages(idAsNumber, "plant") + // 프로젝트 데이터 가져오기 (type=plant만) + const projects = await getVendorProjectsAndContracts(idAsNumber, "plant") // 레이아웃 설정 쿠키 가져오기 + // Next.js 15에서는 cookies()가 Promise를 반환하므로 await 사용 const cookieStore = await cookies() + + // 이제 cookieStore.get() 메서드 사용 가능 const layout = cookieStore.get("react-resizable-panels:layout:mail") const collapsed = cookieStore.get("react-resizable-panels:collapsed") @@ -48,6 +54,9 @@ export default async function VendorDataLayout({ </h2> <InformationButton pagePath="partners/vendor-data-plant" /> </div> + {/* <p className="text-muted-foreground"> + 각종 Data 입력할 수 있습니다 + </p> */} </div> </div> </div> @@ -65,6 +74,7 @@ export default async function VendorDataLayout({ defaultCollapsed={defaultCollapsed} navCollapsedSize={4} > + {/* 페이지별 콘텐츠가 여기에 들어갑니다 */} {children} </VendorDataContainer> )} |
